#ifndef LOGGER_H_
#define LOGGER_H_

#include <iostream>
#include <fstream>
#include <time.h>
#include <string>

using namespace std;

class Logger {
	private:

		/*Metodo que obtiene la fecha y la devuelve como string.*/
		static string getTime() {
			time_t rawtime;
			time ( &rawtime );
			return(ctime(&rawtime));
		}

	public:

		static const int WARNING = 0;
		static const int ERROR = 1;
		static const int LOG = 2;

		// Constructor de la Clase.
		Logger() {
		}

		// Destructor de la Clase.
		~Logger() {
		}

		/*
		* Metodo utilizado para realizar el logueo en un .txt
		* Recibe un codigo de error que indica el tipo de mensaje a escribir:
		* - si tipoLog == 0 => WARNING
		* - si tipoLog == 1 => ERROR
		* - si tipoLog == 2 => LOG
		*/
		static void createEntryLog(string entryLog, int tipoLog) {
		   
		   // Crea un archivo de log, si existe lo abre escribe despues de la ultima entrada
		   ofstream log("TP1.log",ios::app);

		   if(Logger::WARNING == tipoLog) {
			   log << Logger::getTime() + "   WARNING: " + entryLog << endl;
		   } else if(Logger::ERROR == tipoLog) {
			   log << Logger::getTime() + "   ERROR: " + entryLog << endl;
		   } else if(Logger::LOG == tipoLog) {
			   log << Logger::getTime() + "   LOG: " + entryLog << endl;
		   }

		   // Se cierra el archivo de log. 
		   log.close();
		}
};

#endif
